#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
为大乐透创建基础LSTM模型文件的脚本
"""

import os
import sys
import torch
from datetime import datetime

# 添加项目根目录到路径
current_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.abspath(os.path.join(current_dir, '..', '..'))
sys.path.append(project_root)

try:
    from model import LstmCRFModel
except ImportError as e:
    print(f"导入模型类失败: {e}")
    sys.exit(1)

def create_dummy_dlt_model():
    """创建大乐透基础LSTM模型"""
    print("[START] 开始创建大乐透基础LSTM模型")
    print("=" * 50)
    
    # 配置路径
    model_save_path = os.path.join(project_root, 'scripts', 'dlt', 'dlt_lstm_model.pth')
    print(f"[SAVE] 模型保存路径: {model_save_path}")
    
    try:
        # 创建目录（如果不存在）
        os.makedirs(os.path.dirname(model_save_path), exist_ok=True)
        
        # 初始化模型参数
        input_dim = 7  # 大乐透输入维度
        hidden_dim = 128
        red_output_dim = 35  # 红球数量
        blue_output_dim = 12  # 蓝球数量
        red_output_seq_length = 5  # 红球序列长度
        blue_output_seq_length = 2  # 蓝球序列长度
        
        # 创建模型实例
        red_model = LstmCRFModel(input_dim, hidden_dim, red_output_dim, red_output_seq_length)
        blue_model = LstmCRFModel(input_dim, hidden_dim, blue_output_dim, blue_output_seq_length)
        
        # 保存模型状态字典
        torch.save({
            'red_model': red_model.state_dict(),
            'blue_model': blue_model.state_dict(),
            'input_dim': input_dim,
            'hidden_dim': hidden_dim,
            'red_output_dim': red_output_dim,
            'blue_output_dim': blue_output_dim,
            'red_output_seq_length': red_output_seq_length,
            'blue_output_seq_length': blue_output_seq_length,
            'created_time': datetime.now().isoformat()
        }, model_save_path)
        
        print("[OK] 大乐透基础LSTM模型创建成功！")
        print(f"[INFO] 模型文件已保存到: {model_save_path}")
        return True
        
    except Exception as e:
        print(f"[ERROR] 创建模型过程出错: {e}")
        import traceback
        print(traceback.format_exc())
        return False

def main():
    """主函数"""
    print("[TARGET] 大乐透基础LSTM模型创建程序")
    print(f"[TIME] 开始时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    print()
    
    success = create_dummy_dlt_model()
    
    print()
    if success:
        print("[SUCCESS] 模型创建完成！")
    else:
        print("[FAIL] 模型创建失败！")
    
    print(f"[TIME] 结束时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")

if __name__ == "__main__":
    main()